package com.dzl.goods.dao;

import com.dzl.base.mapper.BaseMapper;
import com.dzl.brand.pojo.WelfareBrand;
import com.dzl.goods.pojo.WelfareGoods;
import com.dzl.goods.pojo.dto.WelfareGoodsBatchUpdateDto;
import com.dzl.goods.pojo.query.WelfareGoodsAttrQuery;
import com.dzl.goods.pojo.query.WelfareGoodsManageQuery;
import com.dzl.goods.pojo.query.WelfareGoodsPageQuery;
import com.dzl.goods.pojo.vo.*;
import com.dzl.middleground.pojo.query.SearchGoodsQuery;
import com.dzl.middleground.pojo.vo.SearchGoodsListVo;
import com.dzl.moive.pojo.WelfareMovieInfo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 商品表(WelfareGoods)表数据库访问层
 * @author ChenLong
 * @since 2021-05-18 19:28:54
 */
public interface WelfareGoodsMapper extends BaseMapper<WelfareGoods> {

    /**
     * 通过ID查询单条数据
     * @param id 商品id
     * @author liuguanjun
     * @date 2021-12-17 09:19:39
     **/
    WelfareGoodsDetailVo selectGoodsInfoDetailById(@Param("id") Integer id);

    /**
     * 获取集采商品管理列表
     * @param welfareGoodsManageQuery 商品管理查询实体
     * @return java.util.List
     * @author liuguanjun
     * @date 2021-12-17 10:53:08
     **/
    List<WelfareJicaiGoodsManageVo> selectJicaiGoodsList(WelfareGoodsManageQuery welfareGoodsManageQuery);

    /**
     * 获取商品管理列表,后端管理
     * @param welfareGoodsManageQuery 商品管理查询实体
     * @return java.util.List
     * @author ChenLong
     * @date 2021-05-29 10:42:08
     **/
    List<WelfareGoodsManageVo> getGoodsListManage(WelfareGoodsManageQuery welfareGoodsManageQuery);

    /**
     * 以sku维度查商品，弹窗数据列表，应用于：1.平台端api供应商添加商品   2.企业端兑换券套餐选择商品
     * @param query 查询条件
     * @author liuguanjun
     * @date 2021-11-23 17：03
     */
    List<WelfareSkuGoodsVo> selectGoodsAttrListManage(WelfareGoodsAttrQuery query);

    /**
     * 根据商品id查询商品sku的最低价最高价等
     * @param goodsId 商品id
     * @author liuguanjun
     * @date 2021-10-15 15:49:08
     **/
    WelfareGoodsManageVo selectGoodsPriceAndQuantityByGoodsId(@Param("goodsId") Integer goodsId);

    /**
     * 根据商品id查询该商品在其他企业端销售数量
     * @param goodsId 商品id
     * @author liuguanjun
     * @date 2022-02-19 17:26:08
     **/
    Integer selectPlatformGoodsConvertQuantityByGoodsId(@Param("goodsId") Integer goodsId);

    /**
     * 根据分类id等条件查询获取商品列表（分页），前端应用
     * @param welfareGoodsPageQuery welfareGoodsPageQuery
     * @return java.util.List<com.dzl.goods.pojo.vo.WelfareGoodsWithLowPriceVo>
     * @author ChenLong
     * @since 2021-05-21 09:02:56
     **/
    List<WelfareGoodsBaseVo> selectGoodsListBase(WelfareGoodsPageQuery welfareGoodsPageQuery);

    /**
     * 根据装修页面模块id等条件查询获取商品列表（分页），前端应用
     * @param welfareGoodsPageQuery welfareGoodsPageQuery
     * @return java.util.List<com.dzl.goods.pojo.vo.WelfareGoodsWithLowPriceVo>
     * @author ChenLong
     * @since 2021-05-21 09:02:56
     **/
    List<WelfareGoodsBaseVo> selectGoodsLinkByMicroId(WelfareGoodsPageQuery welfareGoodsPageQuery);

    /**
     * 根据分类获取品牌列表
     * @param welfareGoodsQuery welfareGoodsQuery
     * @return java.util.List<com.dzl.brand.entity.WelfareBrand>
     * @author ChenLong
     * @since 2021-05-18 22:53:36
     **/
    List<WelfareBrand> getBrandListByGoodsQuery(WelfareGoodsPageQuery welfareGoodsQuery);

    /**
     * 商品管理批量上架、下架、改分区，改供应商
     * @param dto 商品管理批量对象
     * @return int
     * @author ChenLong
     * @date 2021-05-29 14:01:20
     **/
    Integer batchUpdateGoods(WelfareGoodsBatchUpdateDto dto);

    /**
     * 批量修改企业商家商品的三级分类
     * @param enterpriseId 企业id
     * @author liuguanjun
     * @date 2022-02-16 17:20:30
     **/
    void updateWelfareGoodsClassifyByEnterpriseId(@Param("enterpriseId") Integer enterpriseId);

    /**
     * 修改企业商家商品的三级分类
     * @param enterpriseId 企业id
     * @param goodsId 商品id
     * @author liuguanjun
     * @date 2022-02-22 11:14:30
     **/
    void updateWelfareGoodsClassifyByGoodsIdAndEnterpriseId(@Param("enterpriseId") Integer enterpriseId,@Param("goodsId") Integer goodsId);

    /**
     * 获取商品三级分类Id列表（通过分区信息）
     * @author ChenLong
     * @date 2021-08-02 09:42:35
     * @param partitionIdList 分区Id列表
     * @return java.util.List
     **/
    List<Integer> getGoodsThirdClassifyIdsByPartitions(@Param("list") List<Integer> partitionIdList);

    /**
     * 获取商品列表（通过微页面跳转Id）
     * @author ChenLong
     * @date 2021-08-02 13:58:32
     * @param microId 跳转id
     * @return java.util.List<com.dzl.goods.pojo.vo.WelfareGoodsBaseVo>
     **/
    WelfareMovieInfo getGoodsLinkByMicroIdForMovie(@Param("microId") Integer microId);

    /**
     * 券密组id查询所有关联的商品
     * @param voucherGroupId 券密组id
     * @return java.util.List
     * @date 2021/6/10 17:52
     * @author caobucao
     */
    List<WelfareGoods> selectRelateGoodsNameByGroupId(Integer voucherGroupId);

    /**
     * @param query 查询实体
     * @return List<SearchGoodsListVo>
     * @Description:分页查询商品-中台项目
     * @author: liufan
     * @time:2021年6月19日 下午3:34:14
     */
    List<SearchGoodsListVo> queryGoodsListByMiddleground(SearchGoodsQuery query);

    /**
     * 修改商品状态是否隐藏
     * @date 2021/7/15 0015 18:00
     * @author wangjian
     * @param goodsIds 商品ID  “，”隔开
     * @param isShow 是否隐藏 1 不隐藏 0 隐藏
     * @return java.lang.Integer
     */
    Integer updateGoodsHide(@Param("goodsIds") String goodsIds,@Param("isShow") Integer isShow);

    /**
     * 修改商品是否同步非自营状态
     * @date 2022/02/26 17:12
     * @author liuguanjun
     * @param platformId 同步商品ID
     * @param syncNonSelfSupport 同步非自营: 1是 0否
     */
    Integer updateGoodsSyncNonSelfSupportStatus(@Param("platformId") Integer platformId,@Param("syncNonSelfSupport") Integer syncNonSelfSupport);

}

